home *** CD-ROM | disk | FTP | other *** search
/ Programming Sound Cards / Programming Sound Cards.iso / sound_87 / os2vt.pas < prev    next >
Pascal/Delphi Source File  |  1995-01-01  |  3KB  |  133 lines

  1. PROGRAM OS2VT;
  2.  
  3. {$M 16000, 0, 655360}
  4.  
  5. USES Dos,
  6.      VTSpecial, VTGlobal, VTCmd, 
  7.      SoundDevices, DevFile,
  8.      PlayMod, ModCommands, SongUnit, SongUtils,
  9.      CmdLine, Heaps, Debugging, FileUtil;
  10.  
  11.  
  12.  
  13.  
  14. VAR
  15.   NoMods : BOOLEAN;
  16.  
  17. FUNCTION DoOneMOD(FName, InsidePath: PathStr) : BOOLEAN; FAR;
  18.   VAR
  19.     Song         : TSong;
  20.     ch           : CHAR;
  21.     IsInsideSong : BOOLEAN;
  22.     NoMod        : BOOLEAN;
  23.   BEGIN
  24.     NoMods   := FALSE;
  25.  
  26.     NoMod        := TRUE;
  27.     ch           := #0;
  28.     IsInsideSong := FALSE;
  29.  
  30.     SetVTDevice;
  31.     SetVTFreq;
  32.     MaxOutputFreq := ActualHz;
  33.  
  34.     FillChar(UserVols, SIZEOF(UserVols), VtVolume);
  35.  
  36.     Song.Init;
  37.  
  38.     REPEAT
  39.       Song.SetInsidePath(InsidePath);
  40.  
  41.       IF VT1stPattern <> 0 THEN
  42.         Song.SongStart := VT1stPattern;
  43.  
  44.       IF VTSongLen <> 0 THEN
  45.         Song.SongLen := VTSongLen;
  46.  
  47.       Song.LoadFName(FName);
  48.       IF Song.ThereIsMore THEN
  49.         IsInsideSong := TRUE;
  50.  
  51.       IF (Song.Status = msOk) OR (Song.Status = msFileTooShort) THEN
  52.         BEGIN
  53.           NoMod := FALSE;
  54.  
  55.           Write(#13, FName);
  56.  
  57.           IF IsInsideSong THEN
  58.             Write('/'+Song.GetInsidePath);
  59.  
  60.           FirstPattern := VT1stPattern;
  61.           RepStart     := VTRepStart;
  62.           SongLen      := VTSongLen;
  63.  
  64.           PlayStart(Song);
  65.           ch := FileRun;
  66.           PlayStop;
  67.           EndSampling;
  68.           WriteLn;
  69.         END;
  70.     UNTIL NOT Song.ThereIsMore;
  71.  
  72.     IF NoMod THEN
  73.       Write(#13'Error en el fichero:', FName);
  74.  
  75.     DoOneMOD := ch <> #27;
  76.  
  77.     Song.Done;
  78.   END;
  79.  
  80.  
  81.  
  82.  
  83. CONST
  84.   NombreApp = 'OS2VT';
  85.  
  86.   AppID : STRING[Length(NombreApp) + 2 + Length(Version) + Length(BetaStr)] =
  87.             NombreApp+' v'+Version+BetaStr;
  88.  
  89. VAR
  90.   s       : STRING;
  91.   i, r    : WORD;
  92.  
  93. BEGIN
  94.  
  95.   WriteLn;
  96.   WriteLn(    '   ┌───────────────────────────────────────────────────────┐');
  97.   WriteLn(    '   │  OS2VT. Versión para OS/2 del VangeliSTracker, v'+Version+'  │');
  98.   WriteLn(    '   │               (C) 1992-93  VangeliSTeam               │');
  99.   WriteLn(    '   └───────────────────────────────────────────────────────┘');
  100.  
  101.   IF ParamCount = 0 THEN
  102.     BEGIN
  103.       WriteLn(' ┌──────────────────────────────────────────────────────────────────────┐');
  104.       WriteLn(' │ OS2VT <fichero>[.MOD|.OKT|.WOW] [<frecuencia> [<fichero de salida>]] │');
  105.       WriteLn(' └──────────────────────────────────────────────────────────────────────┘');
  106.       HALT(1);
  107.     END;
  108.  
  109.   VTResidentCheck(AppID);
  110.  
  111.   Debugging.Debug := FALSE{TRUE};
  112.  
  113.   LoopMod      := FALSE;
  114.   ForceLoopMod := FALSE;
  115.  
  116.   InitHeapVariables;
  117.   InitUmbHeap;
  118.   Cmd.Init;
  119.   SongColl.Init(2, 3);
  120.  
  121.   DevID := FileDevID;
  122.   OneModProc := DoOneMod;
  123.  
  124.   InitSoundDevices;
  125.   InitModUnit;
  126.  
  127.   NoMods := TRUE;
  128.   Cmd.ParseLine(GetDOSCmdLine);
  129.   IF DoSongColl(Cmd.FileDir) THEN
  130.     IF NoMods THEN
  131.       WriteLn('No encuentro ninguna canción.');
  132. END.
  133.